package com.example.project.service;

import java.util.List;

import com.example.project.entity.ProjectMember;

/**
 * 项目成员Service接口
 * 
 * @author ruoyi
 * @date 2025-11-27
 */
public interface ProjectMemberService {

	/**
	 * 查询项目成员
	 * 
	 * @param id 项目成员主键
	 * @return 项目成员
	 */
	public ProjectMember selectProjectMemberById(Long id);

	/**
	 * 查询项目成员列表
	 * 
	 * @param projectMember 项目成员
	 * @return 项目成员集合
	 */
	public List<ProjectMember> selectProjectMemberList(ProjectMember projectMember);

	/**
	 * 根据项目ID查询项目成员列表
	 * 
	 * @param projectId 项目ID
	 * @return 项目成员集合
	 */
	public List<ProjectMember> selectProjectMemberListByProjectId(Long projectId);

	/**
	 * 新增项目成员
	 * 
	 * @param projectMember 项目成员
	 * @return 结果
	 */
	public int insertProjectMember(ProjectMember projectMember);

	/**
	 * 修改项目成员
	 * 
	 * @param projectMember 项目成员
	 * @return 结果
	 */
	public int updateProjectMember(ProjectMember projectMember);

	/**
	 * 批量删除项目成员
	 * 
	 * @param ids 需要删除的项目成员主键集合
	 * @return 结果
	 */
	public int deleteProjectMemberByIds(String ids);

	/**
	 * 删除项目成员信息
	 * 
	 * @param id 项目成员主键
	 * @return 结果
	 */
	public int deleteProjectMemberById(Long id);

	/**
	 * 检查用户是否已在项目中
	 * 
	 * @param userId 用户ID
	 * @param projectId 项目ID
	 * @return 存在数量
	 */
	public int checkUserInProject(Long userId, Long projectId);

	/**
	 * 根据用户ID查询项目成员列表
	 * 
	 * @param userId 用户ID
	 * @return 项目成员集合
	 */
	public List<ProjectMember> selectProjectMemberListByUserId(Long userId);

	/**
	 * 统计项目成员数量
	 * 
	 * @param projectId 项目ID
	 * @return 成员数量
	 */
	public Integer selectCountByProjectId(Long projectId);
}